#ifndef MAT_CHAIN_MUL_CALCULATOR_H
#define MAT_CHAIN_MUL_CALCULATOR_H

#include <iostream>
#include <string>
#include <vector>
#include <ctime>

using namespace std;

class Mat_Chain_Mul_Calculator
{
private:
    vector<int>* mat_chain_ptr;
    vector<vector<long int >> m;
    vector<vector<long int >> s;
    void Matrix_Chain_Order();
    void Print_Optimal_Parens(int i, int j);

public:
    Mat_Chain_Mul_Calculator();
    Mat_Chain_Mul_Calculator(vector<int>* p);
    void run();
    void print_ms();
};

#endif